hvm svm: Inject #UD exception if guest tries to execute any SVM-related
authorKeir Fraser <keir@xensource.com>
Wed, 28 Mar 2007 15:52:05 +0000 (16:52 +0100)
committerKeir Fraser <keir@xensource.com>
Wed, 28 Mar 2007 15:52:05 +0000 (16:52 +0100)
function (except VMMCALL).
Signed-off-by: Mats Petersson <mats.petersson@amd.com>
xen/arch/x86/hvm/svm/svm.c

index ba799d27bec31ba9b475e3fc2c116379d83a09dc..0159e3cd0bef8ed14e3330ce3363fcdd4d24a29f 100644 (file)
@@ -3156,14 +3156,22 @@ asmlinkage void svm_vmexit_handler(struct cpu_user_regs *regs)
         hvm_triple_fault();
         break;
 
+    case VMEXIT_VMRUN:
+    case VMEXIT_VMLOAD:
+    case VMEXIT_VMSAVE:
+    case VMEXIT_STGI:
+    case VMEXIT_CLGI:
+    case VMEXIT_SKINIT:
+        /* Report "Invalid opcode" on any VM-operation except VMMCALL */
+        svm_inject_exception(v, TRAP_invalid_op, 0, 0);
+        break;
+
     case VMEXIT_NPF:
-    {
         regs->error_code = vmcb->exitinfo1;
         if ( !svm_do_nested_pgfault(vmcb->exitinfo2, regs) ) {
             domain_crash(v->domain);
         }
         break;
-    }
 
     default:
     exit_and_crash: